Linux SELinux ์ ๋ฆฌ (SELinux ยท ์ ๊ทผ์ ์ด)
NOTE
SELinux(๊ฐ์ ์ ์ ๊ทผ์ ์ด, MAC)์ ๊ฐ๋ , ์ ๊ทผ์ ์ด ๋ชจ๋ธ(DAC/MAC/RBAC), ๋์ ๋ชจ๋ยท์ ์ฑ , ๋ณด์ ์ปจํ ์คํธยทBooleanยทํฌํธ ๋ ์ด๋ธ ๊ด๋ฆฌ์ ์ค์ต ์๋๋ฆฌ์ค ์ ๋ฆฌ.
๐ ๊ฐ๋
SELinux๋?
- Security-Enhanced Linux
- ์ปค๋ ๋ ๋ฒจ์์ ๋์ํ๋ ๊ฐ์ ์ ์ ๊ทผ์ ์ด(MAC) ๋ณด์ ์ปค๋
- DAC ๊ถํ(
chmod)๋ณด๋ค ์ฐ์ ์ ์ฉ
์ ๊ทผ์ ์ด ๋ชจ๋ธ
- Subject(์ฃผ์ฒด): ์ฌ์ฉ์, ํ๋ก์ธ์ค
- Object(๊ฐ์ฒด): ํ์ผ, ๋๋ ํ ๋ฆฌ, ํฌํธ ๋ฑ ๋ฆฌ์์ค
| ๋ชจ๋ธ | ์ค๋ช | ๋ฆฌ๋ ์ค ์ ์ฉ |
|---|---|---|
| DAC | ์ฌ์ฉ์๊ฐ ๊ถํ์ ์์ ์ค์ | ๊ธฐ๋ณธ chmod |
| MAC | ๋ณด์ ๋ ์ด๋ธ + ์ ์ฑ | SELinux |
| RBAC | ์ญํ ๊ธฐ๋ฐ ๊ถํ | ๊ณ ๊ธ ๋ณด์ ๋ชจ๋ธ |
MAC ํต์ฌ ๊ตฌ์ฑ์์: ๋ณด์ ๋ ์ด๋ธ(Context), ์ ์ฑ ์ค์์น(Boolean). DAC ํ์ฉ ํ MAC์์ ๋ค์ ๊ฒ์ฌํ๋ค.
์ ์ฑ ์ ํ / ๋์ ๋ชจ๋
| ์ ์ฑ ํ์ | ์ค๋ช |
|---|---|
| targeted | ํน์ ํ๋ก์ธ์ค๋ง ๋ณดํธ (๊ธฐ๋ณธ) |
| minimum | ์ต์ ๋ณดํธ |
| mls | ๋ณด์ ๋ฑ๊ธ ๋ถ๋ฆฌ |
| ๋์ ๋ชจ๋ | ์ค๋ช |
|---|---|
| Enforcing | ๊ฐ์ + ๋ก๊ทธ |
| Permissive | ๋ก๊ทธ๋ง ๊ธฐ๋ก |
| Disabled | ์์ ๋นํ์ฑ |
WARNING
/etc/selinux/config๋ณ๊ฒฝ ํ์๋ ๋ฐ๋์ ์ฌ๋ถํ ํด์ผ ํ๋ค.
๋ณด์ ์ปจํ ์คํธ ๊ตฌ์กฐ
์ฌ์ฉ์ : ์ญํ : ํ์
: ๋ ๋ฒจ๐ป ์์
SELinux ์ํ / ๋ชจ๋
getenforce
sestatus
vi /etc/selinux/config # ์ ์ฑ
ยท๋ชจ๋ ์ค์ ํ์ผ
# ๋ฐํ์ ๋ณ๊ฒฝ
setenforce 1 # enforcing
setenforce 0 # permissive๋ณด์ ์ปจํ ์คํธ ๊ด๋ฆฌ
# ํ์ธ
ps axZ
ls -alZ
# ์์ ๋ณ๊ฒฝ
chcon -t httpd_sys_content_t ํ์ผ
# ๋ณต์
restorecon -v ํ์ผ
restorecon -rv ๋๋ ํ ๋ฆฌ
# ์๊ตฌ ์ ์ฑ
๊ด๋ฆฌ (๊ธฐ๋ณธ ์ ์ฑ
์ ์ญ์ ๋ถ๊ฐ)
semanage fcontext -l
semanage fcontext -a -t ํ์
๊ฒฝ๋ก
semanage fcontext -d -t ํ์
๊ฒฝ๋กBoolean (์ ์ฑ ์ค์์น)
getsebool -a
semanage boolean -l
setsebool httpd_enable_homedirs on # ๋ฐํ์
setsebool -P httpd_enable_homedirs on # ์๊ตฌํฌํธ ๋ณด์ ๋ ์ด๋ธ
semanage port -l
semanage port -a -t http_port_t -p tcp 8080
semanage port -m -t http_port_t -p tcp 8080
semanage port -d -t http_port_t -p tcp 8080์ค์ต ํต์ฌ ์๋๋ฆฌ์ค
๋ฌธ์ ์ํฉ: /home/user/index.html์ /var/www/html๋ก ์ด๋ํ๋๋ ์น ์ ์์ด SELinux์ ์ํด ์ฐจ๋จ๋จ.
ํด๊ฒฐ ๋ฐฉ๋ฒ 3๊ฐ์ง:
# 1) Permissive (์์)
setenforce 0
# 2) Context ๋ณต๊ตฌ (์ ์)
restorecon -v /var/www/html/index.html
# 3) Boolean ํ์ฉ
setsebool -P httpd_enable_homedirs on